<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <!-- 
    HTTP请求信息和响应信息的格式（报文）
      请求行 ：请求方法 、请求资源（路径）、所用协议 HTTP/1.1.0（持久连接）
      请求头：（格式：key-value）
      空行
      请求主体：可以没有,发送的内容
      注意：头信息结束后和主体信息之间要空一行  
      例子：POST /0606/02.php HTTP/1.1
        常见的请求头
            Host:localhost
            Content-type:application/x-www-form-urlencode
            Content-length:5
            Connection：‘keep-alive’ 持久连接 
            Authorization：授权信息（比如Token）

            age=3
      响应行：协议、状态码、状态文字
      响应头信息；（格式：key：value）
      空行
      主体信息（也可能没有）

      例子：HTTP、1.1  200 OK
            Content-type：text/html
            Content-length:5
            Expires：指明文档过期时间

            hello

      状态码，状态文字：
      状态码是用来反映服务器响应情况的
        1xx:接收到请求，继续处理
        2xx：操作成功
        3XX:重定向  为了完成请求，必须采取进一步措施
          301：永久重定向 会缓存
          302默认：临时重定向，不会缓存
          304  未修改
          307 重定向中保护原有的请求数据
        4XX：客户端错误  请求的语法有错误或者不能完全被满足
          400：服务器未能理解请求
          401：被请求的页面需要用户名和密码
          403：请求页面的访问被禁止
          404：无法找到这个资源
        5XX：服务端错误
          503：服务器暂时不可用
          500：服务器内部错误
          501：服务器不支持所请求的功能

      HTTP支持的几种请求方法：get、post、delete、put、head
      get和post的区别：
        1.get重点是从服务器上获取资源，post重点是向服务器发送数据
        2.get传输数据是通过URL请求，置于URL后，相当于参数 ，这个过程用户是可见的，
          post传输数据通过HTTP的post机制，将字段与对应值封存在请求实体中发送给服务器，这个过程用户是不可见的
        3.get传输数据量小，因为受URL长度限制，但效率高，post可以传送大量数据，所以传输文件时，只能使用post
        4.post较get安全性较高
        5.get方式只支持ASCLL字符，向服务器传中文字符可能会乱吗，post支持标准字符集，可以正确传递中文字符
      HTTP协议：HTTP的无状态是指会话的无状态，什么是会话？会话是由一组请求和响应组成的，围绕一件相关事情的请求和响应，
                这些不同的请求和响应之间是需要进行数据传递的，但HTTP是无状态指的是本次请求和响应，与下一次的请求和响应是没有关系的，
                不会发生数据传递。 比如客户在购物平台购物场景下，会有这样的场景， 登录，下单，购物，客户想要购物，需要登录后才能进行处理，
                单独靠HTTP是无法完成的，发起登录的HTTP请求成功登录后，不跟踪客户的登录状态，不对后续购物的请求，进行用户登录数据信息传递，
                是无法满足业务逻辑的，需要借助一些比如cookie技术等

                
      在浏览器网址输入URL会发生什么：（完整http请求的步骤）
        从URL中解析出域名并检查缓存中有没有对应域名的ip
        如果浏览器有域名对应的DNS相关信息的缓存，有的话可以拿到服务端的IP地址，如果没有的话，会去本地的host文件查看是否进行了配置，
        如果host文件没有配置相关的信息，那么就会发起DNS的请求用来获取对应的服务器的IP地址。

        TCP三次握手建立连接
        发起HTTP请求，发送header和body等信息
        服务器响应http请求，将资源封装成响应包返回，关闭连接
        浏览器解析响应报文，渲染页面
        TCP四次挥手断开连接

      Web缓存：是一种特殊的HTTP代理服务器，可以将经过代理传送的常用文档赋值保存起来
        客户端从附近的缓存下载文档回避从远程Web服务器下载快得多    

      HTTP缓存
        HTTP 缓存又分为强缓存和协商缓存：
          首先通过 Cache-Control 验证强缓存是否可用，如果强缓存可用，那么直接读取缓存
          如果不可以，那么进入协商缓存阶段，发起 HTTP 请求，服务器通过请求头中是否
          带上 If-Modified-Since 和 If-None-Match 这些条件请求字段检查资源是否更新：
            若资源更新，那么返回资源和 200 状态码
            如果资源未更新，那么告诉浏览器直接使用缓存获取资源

    -->
    <script>
    </script>
</body>
</html>